Wavestation SR Developer Overview
Dan Phillips
This material is 1992 by Korg Research and Development

1.0 Changes in the Wavestation SR

This document assumes that you are already familiar with the
Wavestation, Wavestation EX, and Wavestation A/D. It details the
differences between the Wavestation SR and the Wavestation A/D; if you
need documentation for the Wavestation A/D as well, please contact Korg
USA Developer Support.

1.1 Seven Additional ROM Program Banks

7 more ROM Banks have been added, which (along with RAM1-3 and the
original ROM Bank) brings the total number of internal Banks to 11.

1.2 Enhanced Multisets

The SR has 32 Multisets, as opposed to the 16 of the Wavestation and
Wavestation A/D. The SRs Multisets also have 15-character names, just
like Performances. Each Channel now has an additional FX Bus parameter,
which is used for panning and effects routing (just as the similarly
named parameter in Performance Parts). Instead of the Parts FX Bus
setting, PATCH, Multisets have PERF.

1.3 Uses New Korg PCM Cards

The SR uses the same PCM cards as the new 01/W series, which have four
times the storage capacity as the older cards. The program data cards
are the same as the Wavestation, so that all of the existing program
card libraries can be used.

1.4 Enhanced MIDI features

Reception of Bank Select may be disabled, to make it easier to select
programs from controllers with less banks than the SR. It is possible
to globally limit the number of MIDI channels received in MULTI mode,
in addition to the number received in MONO mode (the new parameter is
stored separately). MIDI Pan (controller #10) is now recognized
(controller 42 is also used for accessing the extra bus settings, C,
C+D, D, ALL, and PATCH or PERF).

1.5 New SysEx Executable Commands

New commands are provided for initializing entire Performances (all 8
parts), initializing Patches, soloing Parts and Wave Sequence Steps,
initializing and copying entire Wave Sequences, companding Wave
Sequences, and inserting and deleting Wave Sequence Steps.

1.6 Wave Sequence Dump Request

This isnt actually unique to the SR, but I thought that Id point it
out in case anyone hadnt noticed it previously. The original
Wavestation keyboard required the user to manually initiate a Wave
Sequence dump from the front panel; the Wavestation EX, Wavestation
A/D, and Wavestation SR all respond to a Wave Sequence dump request.

1.7 No Local Controllers or Analog Inputs

The analog inputs, joystick, and pedal inputs have been removed
(joystick and pedals are still received via MIDI).

1.8 Program Data Fully Compatible with previous Wavestations

The expanded features of the Wavestation SR are simply ignored by the
A/D, EX, and original keyboard. Any parameter editors will work just as
they did for previous Wavestations.

2.0 Implementation of ROM expansion

The Wavestation SR has 3 RAM Banks (as does the Wavestation A/D), and 8
ROM Banks (seven more than the Wavestation, Wavestation EX, and
Wavestation A/D, which all have only one). To maintain compatibility
with older members of the Wavestation family, these additional Banks
have been implemented in several different ways, as described below.

2.1 Internal Bank Numbering

Where possible, SysEx data for the new Banks is handled by simply
referencing their internal bank numbers. In two important cases,
however, we have used other methods, in the interest of maintaining
backwards compatibility with the previous Wavestation instruments.
These special cases are the references to Patches in Performances and
to Wave Sequences in Patches. Additionally, the Multi Mode Setups and
Performance Map are sent three times each, with each carrying
information appropriate to a different Wavestation model.

Note that the SRs front panel interface increments through the Banks
according to the order of the bank names, as opposed to the order of
the internal bank numbers (otherwise, youd press the Bank button and
see, RAM1, RAM2, ROM11, CARD, RAM3, ROM4 etc.).

Note also that the old ROM Bank is now ROM11.

Bank Name    Internal Bank Number
RAM1         0
RAM2         1
RAM3         4
ROM4         5
ROM5         6
ROM6         7
ROM7         8
ROM8         9
ROM9         10
ROM10        11
ROM11        2
CARD         3


2.2 MIDI Bank Select and Program Change

The table below shows the mapping between MIDI Bank Select (controller
#32) and the internal Banks. Note that, as in the keyboard and A/D,
there are two internal Banks to every MIDI Bank (sounds like a Beach
Boys song....). The MSB of Bank Select, controller #0, is transmitted
but ignored on receive.

SR Bank    MIDI Bank   MIDI Program Change
RAM1       0           0 - 49
RAM2       0           50 - 99
RAM3       2           0 - 49
ROM4       2           50 - 99
ROM5       3           0 - 49
ROM6       3           50 - 99
ROM7       4           0 - 49
ROM8       4           50 - 99
ROM9       5           0 - 49
ROM10      5           50 - 99
ROM11*     1           0 - 49
CARD*      1           50 - 99

*ROM11 is the same as the original Wavestations single ROM bank. To
maintain compatibility with the Wavestation family, ROM11 and CARD use
MIDI Bank 1.

2.3 Multi Mode Setup

The Multi Mode Setup dump is sent three times; once as a normal dump
for the Wavestation and Wavestation EX, once as an expanded dump for
the Wavestation A/D, and once as a true SR dump. Each dump uses a
similar data structure, with a different header, as described in the
System Exclusive documentation. The normal and expanded dumps
change the Bank references as shown in the chart below, while the SR
dump leaves the Banks unchanged. Also, the normal and expanded dumps
only include the data for the first 16 Multisets, and also strip out
the names and channel panning; the SR dump includes all of this
additional data.

The Wavestation keyboard ignores both the expanded and SR dumps, so that
only the normal one has any effect. The Wavestation A/D accepts both
the normal and the expanded dumps, ignoring the SR dump; as the
expanded version is received second, it supersedes the normal one. The
SR accepts all three dumps, but as the SR dump is received last, it is
the one which takes effect.

The All Data dump contains the Wavestation Keyboard version of the
Multi Mode Setup data; the A/D and SR versions are sent separately
afterwards.

The chart below shows the conversion from Wavestation SR Banks to
Wavestation A/D and Wavestation Keyboard Banks.

SR Bank   A/D Bank  Keyboard Bank
RAM1      RAM1      RAM1
RAM2      RAM2      RAM2
RAM3      RAM3      ROM
ROM4      RAM3      RAM1
ROM5      RAM3      RAM2
ROM6      RAM3      CARD
ROM7      RAM1      RAM1
ROM8      RAM2      RAM2
ROM9      ROM       ROM
ROM10     CARD      CARD
ROM11     ROM       ROM
CARD      CARD      CARD

2.4 Performance Map

The Performance Map dump, like the Multi Mode Setup dump above, is sent
three times; once as a normal dump for the keyboard, once as an
expanded dump for the A/D, and once as a true SR dump. The Banks are
mapped as for Multiset dumps, above. Note that the original Wavestation
keyboard ignores all Perf Map dumps (Perf Maps are only communicated as
part of the All Data Dump), but the Wavestation EX recognizes the
normal dump. The Wavestation A/D accepts the first two dumps, but as
the expanded version is received second, it supersedes the normal one.
The SR accepts all three dumps, but as the SR dump is received last, it
is the one which takes effect.

The All Data dump contains the Wavestation keyboard version of this
data; the expanded and SR versions are sent separately afterwards.

2.5 Patches in Performances

In the Performance dump, bits 6-7 of the Part_Mode parameter work in
conjunction with the Bank_Num parameter to determine the Bank of the
Patch in the current Part.

Note that the Wavestation A/D used only bit 6 of the Part_Mode
parameter, for the purpose of selecting RAM3. Also, the A/D itself
always set the Bank_Num of a RAM3 Wave to 2; unfortunately, this point
was omitted from the A/Ds developer docs. We are aware that some
developers set the Bank_Num for RAM3 to 4; others may have ignored this
parameter altogether. This means that, to ensure compatibility of your
Wavestation A/D patches with the SR, you may need to check your code
for the A/D (otherwise, a Part might show up as RAM3 on the A/D and,
for instance, ROM5 on an SR). To maintain as much compatibility as
possible with existing editor programs, the SR will accept any Bank_Num
value of 4 or greater as RAM3 (when the Part_Mode bits are also set
correctly to 01).

Bank_Num    Bits 6-7 of Part_Mode
            00     01     10     11
0           RAM1   ROM4   ROM7   Reserved for future use
1           RAM2   ROM5   ROM8   Reserved for future use
2           ROM11  RAM3*  ROM9   Reserved for future use
3           CARD   ROM6   ROM10  Reserved for future use

*As discussed above, when bits 6-7 are set to 01, Bank_Num values of 4
or greater will also be interpreted as RAM3.

2.6 Wave Sequences in Patches

In the Patch dump, the Bank_Exp byte works in conjunction with the
Wave_Bank parameter to determine the Bank of a Wave Sequence used by a
Patch. While each of the four Waves in a Patch has its own Wave_Bank
parameter, there is only a single Bank_Exp byte. Bits 0 and 4 refer to
Wave A, bits 1 and 5 to Wave B, bits 2 and 6 to Wave C, and bits 3 and
7 to Wave D.

If neither of a Waves Bank_Exp bits are set, then the Wave_Bank
parameter selects the Wave Sequence Bank as before: 0 is RAM1, 1 is
RAM2, 2 is ROM11, and 3 is Card. If one of the Bank_Exp bits is set,
the Wave Sequence Bank is determined as shown in the table below.

Only one of the two Bank_Exp bits per Wave should be set. For instance,
if Bit 3 is set to 1 (so that D uses ROM4), Bit 7 should be set to 0.

The Wave_Bank parameter is similar to the Bank_Num parameter in
Performances. The Wavestation A/D always set Wave_Bank to 2 for RAM3,
but to maintain as much compatibility as possible with existing editor
programs, Wave_Bank values of 4 and above will also be accepted as RAM3
(when the Bank_Exp bits are set appropriately).

Bank_Exp Bits        Wave_Bank (set for each Wave)
                     0        1        2        3
bit 0=1 (bit 4=0)    A=ROM4   A=ROM5   A=RAM3*  A=ROM6
bit 1=1 (bit 5=0)    B=ROM4   B=ROM5   B=RAM3*  B=ROM
bit 2=1 (bit 6=0)    C=ROM4   C=ROM5   C=RAM3*  C=ROM6
bit 3=1 (bit 7=0)    D=ROM4   D=ROM5   D=RAM3*  D=ROM6
bit 4=1 (bit 0=0)    A=ROM7   A=ROM8   A=ROM9   A=ROM10
bit 5=1 (bit 1=0)    B=ROM7   B=ROM8   B=ROM9   B=ROM10
bit 6=1 (bit 2=0)    C=ROM7   C=ROM8   C=ROM9   C=ROM10
bit 7=1 (bit 3=0)    D=ROM7   D=ROM8   D=ROM9   D=ROM10

*As discussed above, when bits 0-3 are set, Wave_Bank values of 4 or
greater will also be interpreted as RAM3.

Another look at the bits in the Bank_Exp byte:

2nd Expansion Bits      1st Expansion Bits
7     6     5     4     3     2     1     0

D     C     B     A     D     C     B     A
    ( W a v e )             ( W a v e )

3.0 Implementation of Enhanced Multisets

3.1 Multiset Selection via SysEx

The original Wavestation allowed selection of Multisets via System
Exclusive parameter changes. The Wavestation A/D added an option to
select Multisets via Program Changes on the Basic Channel. The SR
supports both of these methods, but the SysEx implementation has been
changed to support the 16 additional Multisets.

The original Multi Mode Setup Select, message 5B(hex), is used to
select Multisets 0-15; the new Multi Mode Setup Select SR Expanded,
message 63(hex), is used to select the new Multisets, 16-31. The SR
Expanded message uses the true Multiset number as the value, so that
Multiset 16 is selected by a value of 16.

The Wavestation keyboard and Wavestation A/D will not recognize the SR
Expanded message.

3.2 Multiset Sysex Dump

The SRs Multiset SysEx dump consists of four main parts. First is the
original set of 16 Multisets, with the same data structure as before.
Next is the set of the 16 additional Multisets, also using the original
data structure. Next, the names for all 32 Multisets are sent, followed
by the FX Bus settings for each of the 16 channels in all of the 32
Multisets.

Note that the SR also sends out Multiset dumps compatible with the
Wavestation keyboard and Wavestation A/D, as described under section
2.3, Multi Mode Setup on page 6.

Please note that, as in the original keyboard and A/D, there is an
additional byte sent after each group of 16 Multisets (so, in the SR
multiset dump, there are two extra bytes). This is shown in the System
Exclusive documentation, but some developers have missed this detail.

4.0 Default Values of Non-Referenced Parameters

4.1 FOOT PEDAL ASSIGN page removed

The Foot Pedal Assign page has now been completely removed, as there are
no foot pedals for it to assign (sometimes, these things just make
sense). The pages parameters will continue to be transferred by the
GLOBAL system exclusive data dump. The parameters will be stored, but
not displayed, in the Wavestation SR. All the parameters will be set to
the following default values on initial power up:

Foot Pedal    Function       Polarity

Damper        Sustain        
Pedal/Sw 1    Perf Advance   
Pedal/Sw 2    Mod Pedal      

4.2 Other Parameters Not Referenced by the Wavestation SR

The following parameters are referenced by the Wavestation and
Wavestation EX, but not by the A/D or SR. This list is the same as in
the Wavestation A/D documentation; we have included it again for
conveniences sake.

4.2.1 TRANSMIT page parameters

These will be transferred in the GLOBALS system exclusive data
transfer. Since these parameters cannot be edited on the Wavestation
SR, they can only be changed by a GLOBAL system exclusive data transfer
from a Wavestation or a system exclusive parameter change message. All
the parameters will be set to the following default values on initial
power up of the Wavestation SR.

Xmit Mode will be set to BASIC Channel.
Local Control will be set to ENABLE.
Program Change will be set to ENABLE.
Aftertouch will be set to ENABLE.
Pitch Bend will be set to ENABLE.
Controllers will be set to ENABLE.

4.2.2 PROGRAM PART DETAIL page MIDI Xmit parameters.

The Xmit Chan and Prog Change Xmit parameters have been removed from
the Performance Part Detail page. These will be transferred by
PERFORMANCE system exclusive data transfer, or by a Program CARD. Since
these parameters cannot be edited on the Wavestation SR, they can only
be changed by a GLOBAL system exclusive data transfer from a
Wavestation or a system exclusive parameter change message. All the
parameters will be set to the following default values on initial power
up of the Wavestation SR.

Xmit Chan will be set to 1.
Prog Change Xmit will be set to 1.

4.2.3 Key offset removed; Xpose added

The Key offset amount parameter has been removed from the MIDI page, and
the Xpose parameter has been added to the GLOBAL page. These will be
received by GLOBAL system exclusive data transfer. The Key
OffsetAmount field on the Wavestation will be set to the value of the
Xpose field on the GLOBALS page of the Wavestation SR.

5.0 Parameter Changes

5.1 New Parameters added.

The SR adds a number of new parameters. Some will be useful to you as a
developer; others were added for the user interface or internal
debugging, and are best left alone.

407 through 409 allow you to initiate dumps as if you were doing so from
the front panel. These were added for the user interface, and its
probably best to use the dump requests instead.

/* 407 */   	SYSEX_XMIT_TYPE,
/* 408 */   	SYSEX_XMIT_BANK,
/* 409 */   	SYSEX_XMIT_NUM,

410 through 424 should look similar to you, as they duplicate the
functions of pre-existing parameters. These were added for the user
interface alone, and the SR will accept all of the old parameters just
fine.

/* 410 */   	WAVE_BANK,
/* 411 */   	WAVE_NUM,
/* 412 */   	WAVE_NAME,
/* 413 */   	WAVE_LEVEL,
/* 414 */   	WAVE_TUNE_COARSE,
/* 415 */   	WAVE_TUNE_FINE,
/* 416 */   	WAVE_TUNE_SLOPE,
/* 417 */   	WAVE_BUS_A,
/* 418 */   	WAVE_BUS_B,
/* 419 */   	WAVE_BUS_C,
/* 420 */   	WAVE_BUS_D,
/* 421 */   	MIX_ENV_RATE_1,
/* 422 */   	MIX_ENV_RATE_2,
/* 423 */   	MIX_ENV_RATE_3,
/* 424 */   	MIX_ENV_RATE_4,

The Solo Status parameters are read-only.

/* 425 */   	PART_SOLO_STATUS,
/* 426 */   	WS_STEP_SOLO_STATUS,

Params 427-428 can be used to change the Mode of the SR, just as if the
front panel PERF or MULTI button were pressed.

/* 427 */   	PERF_MIDI_MODE,
/* 428 */   	MULTI_MIDI_MODE,

If you want to play the demos via SysEx (possible but unlikely), use 429
to select the desired demo sequence, and then use 451
(EXECUTE_PLAY_DEMO) to start playback.

/* 429 */   	CURRENT_DEMO,

430 is read-only.

/* 430 */   	CURRENT_DEMO_NAME,

WAVE_WAVE was added for the user interface only. You can safely ignore
it, but first, for fun, read it aloud a couple of times using the
correct inflection (WAVE-wave).

/* 431 */   	WAVE_WAVE,

432 and 433 are the new Multiset parameters. The MULTISET_OUTPUT applies
to the current channel.

/* 432 */   	MULTISET_NAME,
/* 433 */   	MULTISET_OUTPUT,

434-436 are the new MIDI parameters. 434 sets the number of channels
received in Multi mode. 435 determines whether or not controllers,
along with notes, should be reset if active sensing is discontinued.
436 determines whether or not Bank Select messages are recognized. See
the Reference Guide for more details.

/* 434 */   	NUM_MULTI_CHANS,
/* 435 */   	RESET_ACT_SENS_CONTROL,
/* 436 */   	REC_BANK_CHANGE

437 -449 are read-only parameters intended for internal debugging. Note
that the SR will respond to a Device Inquiry Request, which includes
the version number.

/* 437 */   	KSD_ENABLE,
/* 438 */   	VERSION_NUM,
/* 439 */   	VERSION_DATE,
/* 440 */   	ERROR_NUMBER,
/* 441 */   	TASK_NUMBER,
/* 442 */   	STATUS_REGISTER,
/* 443 */   	CRASH_LEVEL,
/* 444 */   	PROGRAM_COUNTER,
/* 445 */   	C_PROGRAM_COUNTER,
/* 446 */   	STACK_POINTER,
/* 447 */   	USER_STACK_POINTER,
/* 448 */   	POOL_LEVEL,
/* 449 */   	POOL_LEVEL_MAX,

We affectionately refer to 450 as the Bill and Ted parameter.

/* 450 */   	BOGUS_PARAM,

451 to the end are the executable parameters. A value of 1 executes the
command, just like pressing YES on the front panel; a value of 0 is
the same as pressing NO (you shouldnt need to use the latter).

/* 451 */   	EXECUTE_PLAY_DEMO,
/* 452 */   	EXECUTE_SOLO_PART,
/* 453 */   	EXECUTE_INIT_PART,
/* 454 */   	EXECUTE_COPY_PART,
/* 455 */   	EXECUTE_COPY_MODULES,
/* 456 */   	EXECUTE_COPY_FX_ALL,
/* 457 */   	EXECUTE_COPY_FX_PARAMS,
/* 458 */   	EXECUTE_COPY_FX_MIX,
/* 459 */   	EXECUTE_INSERT_WS_STEP,
/* 460 */   	EXECUTE_DELETE_WS_STEP,
/* 461 */   	EXECUTE_ZONE_KEY_LAYER,
/* 462 */   	EXECUTE_ZONE_KEY_SPLIT,
/* 463 */   	EXECUTE_ZONE_VEL_SWITCH,
/* 464 */   	EXECUTE_ZONE_VEL_LAYER,
/* 465 */   	EXECUTE_SOLO_WS_STEP,

Please note that there is a problem with the WRITE command,
as discussed in the document "Wavestation Developer FAQ."

/* 466 */   	EXECUTE_WRITE,
/* 467 */   	EXECUTE_COMPARE,
/* 468 */   	EXECUTE_INIT_PATCH,
/* 469 */   	EXECUTE_CENTER_POINT,
/* 470 */   	EXECUTE_SYSEX_XMIT,
/* 471 */   	EXECUTE_SYSEX_MULTI_DUMP,
/* 472 */   	EXECUTE_BANK_MOVE,
/* 473 */   	EXECUTE_FORMAT_CARD,
/* 474 */   	EXECUTE_WAVESEQ_COMPAND,
/* 475 */   	EXECUTE_WAVESEQ_INIT,
/* 476 */   	EXECUTE_WAVESEQ_COPY,
/* 477 */   	EXECUTE_WAVESEQ_STEP_COPY,
/* 478 */   	EXECUTE_ENABLE_SHOW,

479 initializes all RAM to default parameters. 

/* 479 */   	EXECUTE_INIT_RAM,

480 and 481 load the contents of a card into RAM, and then spit the data
out again, respectively. These will make complete and utter hash of the
SRs Multisets, Performances, etc. We considered giving these functions
their own large, red button on the front panel, labeled Do Not Touch,
but then thought the better of it.

/* 480 */   	EXECUTE_LOAD_DIAG,
/* 481 */   	EXECUTE_SAVE_DIAG,

482 duplicates the user interface EXIT function.

/* 482 */   	EXECUTE_EXIT_LEVEL,

Special Bonus Parameter 483 was added after the printing of the first 
version of the SR Reference Guide.

/* 483 */   	EXECUTE_INIT_PERF
/* 484 */   	PARAM_END     /* Must be last */
